The recent proliferation of electronic devices for communication, information management and recreation has moved routine computing power away from the desk-bound personal computer. Users are using devices such as cell phones, camera phones, personal digital assistants (PDAs) and navigation systems, not only in the office and in the home, but also in the field and on the road. There is a diverse range of possible applications for such devices, including communication, business, navigation, entertainment and even managing basic daily activities. Many users today only use a single device for a single task, for example, using cell phones for making and receiving phone calls. However, these devices are no longer single-function devices. They are capable of creating various types of data, for instance, electronic mail, voice messages, photos, video, etc. Increasing the number of functions of a device increases the level of personalization to the users. It is desirable to provide users a connected-service to connect and access their data wherever they are, with whatever device they are using and whatever service they are connected to.
FIG. 14 illustrates a prior art system for servicing user accounts. The system includes a plurality of client devices 1402, a load balancer 1404, a plurality of stateless servers 1406 (server 1, server 2 . . . server n, etc.), and a large central database server 1408. There are several problems with the prior art system. First, it requires a high cost central database. The reason the central database has a high cost is that it needs to be robust to avoid any significant interruption of service to the user accounts. If the central database fails, millions of user accounts served by the central database are affected. Second, the central database requires a large storage capacity and fast network access time in order to serve the millions of user accounts. Third, the prior art system requires the large storage capacity and the servers to be operational before any service can be offered to the users. In this approach, the system has a high upfront setup cost and is not able to scale its capacities accordingly as the number of user accounts increases. As a result, the system may not be able to take advantages of future hardware and software improvements and cost reductions as technology advances. Fourth, the prior art system requires a load balancer to distribute the load of the user accounts to the various servers in the system, which adds additional delay and cost to the system. Therefore, there is a need for a scalable system to address these issues of the prior art system.
One of the challenges of scalable software blade architecture is that when a blade fails, the system needs to replace the failing blade or transfer the user accounts from the failing blade to other blades in the system behind the scenes. Thus, there is a need for recovering a failing blade seamlessly or with minimal interruption to the service of the user accounts. Moreover, there is also a need for reducing the cost associated with transferring a large amount of data to or from the central database during the recovery of the failing blade.
Another challenge of scalable software blade architecture is to share data between two or more users on different blades. Communication of user data between blades is difficult because the blades are stateless with respect to the user data, which may be shared by one or more devices belong to the user. Thus, there is a need for sharing data between two or more users hosted by different blades while keeping each blade stateless with respect to the data to be shared. In addition, there is a need for sharing data between two or more users hosted by different blades while keeping devices of both users up-to-date with the data according to the settings and capabilities of the user devices.